require(['zTreeCheckbox', 'select2', 'validator'], function () {
	//========================================= 变量
    var userInfo = commonFun.execParentMethod("getUserInfo");					//当前登陆用户信息
    // 如果是最高管理员登录,可以让其看到所属公司
    var isAdminRole = userInfo.isAdminRole;										//是否超级管理员
    var getTreeDataUrl = "/baseOrgan/getBaseOrganList.htm",						//获取组织树url
        saveUrl = "/baseOrgan/saveBaseOrgan.htm",								//保存机构信息url
        updateUrl = "/baseOrgan/updateBaseOrgan.htm",							//编辑机构信息url
        delUrl = "/baseOrgan/delBaseOrgan.htm",									//删除机构信息url
        validateOrganInResUrl = "/baseOrgan/getValidateOrganInRes.htm",			//校验机构权限url
        saveOrUpdateUrl = "",													//保存时url（增加/修改）
        organTreeObj = {},														//机构树
        treeNode = {},															//机构树节点
        $orgForm = $("#orgForm"),												//机构表单
        $organTree = $("#orgTree");												//机构树对应页面元素
    // 方法
    
    /**
     * 初始化页面元素
     */
   function initElements(){
	   if (isAdminRole === "1") {
		   $("#corpName").removeAttr("disabled");
	   } else {
		   $("#corpName").attr({"disabled": "disabled"});
	   }
	   $(window).on('resize', initHeight).trigger('resize');
	   $('#orgForm').initForm();
   } 
    
    /**
     * 初始化机构树高度和页面右侧高度
     */
    function initHeight() {
        var height = $(window).height();
        $organTree.parent().height(height - 45);
        $organTree.height(height - 55);
        $('#rightbox').height(height);
    }

    /**
     * 获得节点数据，并且生成左侧的树
     */
    function initOrganTree(nodeId) {
        $.ajaxExt({
            url: getTreeDataUrl
        }).done(function (data) {
            if (!data) {
                data = [];
            }
            // 树的参数配置
            var setting = {
                data: {
                    key: {
                        name: "organName"
                    },
                    simpleData: {
                        enable: true,
                        idKey: "organId",
                        pIdKey: "parentOrganId",
                        rootPId: 0
                    }
                },
                view: {
                    showIcon: true
                },
                callback: {
                    onClick: organTreeClick
                }
            };
            //生成树
            organTreeObj = $organTree.createTree(setting, data, {search: $('#searchlabel')});//$.fn.zTree.init($organTree, setting, data);
            if (typeof nodeId !== "undefined") {//选中对应节点
                organTreeObj.setting.view.expandSpeed = "";
                organTreeObj.expandAll(true);
                organTreeObj.setting.view.expandSpeed = "fast";
                var node = organTreeObj.getNodesByFilter(function (node) {
                    return node.organId == nodeId;
                }, true);
                organTreeObj.selectNode(node, false);
                organTreeClick(null, node.organId, node, true);
            } else {//选中第一个节点
                organTreeObj.expandAll(true);
                var node = organTreeObj.getNodesByFilter(function (node) {
                    return node.level == 0;
                }, true);
                organTreeObj.selectNode(node, false);
                organTreeClick(null, node.organId, node, true);
            }
        });
    }

    /**
     * 点击树节点
     */
    function organTreeClick(event, treeId, treeNode, clickFlag) {
        //右侧的“保存”按钮，将会变成更新的功能
        saveOrUpdateUrl = updateUrl;
        // 显示删除按钮
        $("#delete").show();
        //对应填充右侧数据
        fillfn(treeNode);
    }

    /**
     * 点击左侧机构列表，填充右侧信息
     */
    function fillfn(item) {
        //刷新一下
//        if (item.provinceId && item.provinceId != $("#provinceId").val()) {//当省份值有改变才触发change事件
//            $("#provinceId").val(item.provinceId).trigger("change", function () {//当城市的下拉数据加载完成时才进行设值
//                $orgForm.setValues(item);
//            });
//        } else {
//            $orgForm.setValues(item);
//        }
        $orgForm.setValues(item);
        //通过点击的节点，获得父节点名称，显示在右侧的上级机构框中
        treeNode = organTreeObj.getSelectedNodes()[0]; // 获取当前节点
        if (treeNode.getParentNode() != null) {
            var pOrganName = treeNode.getParentNode().organName;
            $("#pOrganName").val(pOrganName);
        } else {
            $("#pOrganName").val("无");
        }
    }

    // add 左侧点击“新增”的事件
    $("#add").on("click", function () {
        // 对应修改右侧“保存”按钮的功能
        saveOrUpdateUrl = saveUrl;
        // 隐藏删除按钮
        $("#delete").hide();
        // 将右侧的表单数据清空
        $orgForm.reset();
        // 将左侧选中的树节点，设到右侧的上级分组文本框中
        treeNode = organTreeObj.getSelectedNodes()[0]; // 获取当前节点
        $("#pOrganName").val(treeNode.organName);
        $("#parentOrganId").val(treeNode.organId);

        $("#corpName").val(treeNode.corpName);
        $("#corpId").val(treeNode.corpId);
    });

    // add upt “保存”或者“更新”记录
    $('#saveOrUpdate').on("click", function () {
        // 表单校验功能模块,[还没完成，界面上需要相应配置。而且校验的设计仍然不完整]
		if($.validator('#orgForm')){
	        var formData = $orgForm.getValues();
	        // 通过ajax访问后台，操作数据库
	        var loadMask = $.createMask();
	        $.ajaxExt({
	            url: saveOrUpdateUrl,
	            data: formData
	        }).done(function (data) {
	            // 提醒操作成功
	            if (saveOrUpdateUrl === saveUrl) {
	                $.messager.alert("提示", "您成功新增了一个组织机构。", "success");
	            } else if (saveOrUpdateUrl === updateUrl) {
	                $.messager.alert("提示", "您成功修改了一个组织机构。", "success");
	            }
	            // 刷新一下改变后的数据
	            initOrganTree(data);
	            // info 对应刷新左侧树的机构数据
	            commonFun.reloadLeftTree();
	        });
	        loadMask.remove();
		}
    });

    // del “删除”组织
    $('#delete').click(function () {
        treeNode = organTreeObj.getSelectedNodes()[0]; // 获取当前节点
        if (treeNode.isParent) {
            $.messager.alert("警告", "该机构存在下级机构，不能删除！", "warning");
        } else {
            var organId = treeNode.organId;
            // TODO 已分配给角色的组织，删除时增加提醒。
            var loadMask = $.createMask();
            $.ajaxExt({
                url: validateOrganInResUrl,
                data: {'organId': organId}
            }).done(function (data) {
                if (data) { // 已分配返回true
                    $.messager.confirm("是否删除", "该机构已分配角色，是否删除？", function (r) {
                        if (r) {
                            delMethod(organId);
                        }
                    });
                } else { // 没有分配的话
                    $.messager.confirm("是否删除", "是否删除该机构？", function (r) {
                        if (r) {
                            delMethod(organId);
                        }
                    });
                }
                loadMask.remove();
            });
        }
    });

    // del 封装的删除方法
    function delMethod(organId) {
        $.ajaxExt({
            url: delUrl,
            data: {'organId': organId}
        }).done(function () {
            //刷新一下改变后的数据
            if (treeNode.getParentNode() !== null) {
                initOrganTree(treeNode.parentOrganId);
            } else {
                initOrganTree();
            }
            // info 对应刷新左侧树的机构数据
            commonFun.reloadLeftTree();
        });
    }
    
    if(userInfo.corpId != '39708c61759b48748c5bd853ba64ded5'){
    	$("#corpli").hide();
    }
    
    initOrganTree();
    initElements();
});
